উদাহরণ সহ Maven Properties এবং Resource Filtering

Maven Properties এবং Resource Filtering - ম্যাভেন (Maven) - Java Technologies

254

Maven হল একটি অত্যন্ত শক্তিশালী বিল্ড টুল যা Java প্রোগ্রামিং ভাষার প্রকল্পে ব্যবহৃত হয়। Maven Properties এবং Resource Filtering দুটি অত্যন্ত গুরুত্বপূর্ণ বৈশিষ্ট্য যা প্রজেক্ট কনফিগারেশন, ডিপেনডেন্সি এবং বিল্ড প্রক্রিয়ার জন্য ব্যবহৃত হয়। Maven Properties আপনাকে প্রকল্পের বিভিন্ন সেটিংস এবং পরিবর্তনশীল কনফিগারেশন মান সংরক্ষণ করতে সাহায্য করে, এবং Resource Filtering আপনাকে কনফিগারেশন ফাইলের ভিতরে ডাইনামিক মান স্থাপন করতে সহায়তা করে।

১. Maven Properties এর ধারণা

Maven প্রজেক্টে properties এমন পরিবর্তনশীল মান সংরক্ষণ করার জন্য ব্যবহৃত হয় যা পুরো বিল্ড প্রক্রিয়ায় ব্যবহার করা যায়। এই প্রপার্টি গুলির মাধ্যমে আপনি বিভিন্ন কনফিগারেশন এবং সেটিংস ডাইনামিকভাবে কাস্টমাইজ করতে পারেন। সাধারণত, pom.xml ফাইলে Maven properties ব্যবহার করা হয়।

Maven Properties এর সুবিধা

  1. Reusability: একবার সেট করা প্রপার্টি মানগুলি প্রজেক্টের বিভিন্ন স্থানে পুনরায় ব্যবহার করা যায়।
  2. Flexibility: প্রপার্টির মান পরিবর্তন করে একাধিক পরিবেশে (development, staging, production) কনফিগারেশন কাস্টমাইজ করা যায়।
  3. Ease of Configuration: প্রপার্টি ফাইলের মাধ্যমে কনফিগারেশন পরিবর্তন সহজ হয়, এবং কোন কোড পরিবর্তন ছাড়াই সেটিংস পরিবর্তন করা সম্ভব হয়।

১.১ Maven Properties এর উদাহরণ

<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>my-app</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- Define properties -->
    <properties>
        <java.version>1.8</java.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.1</version>
                <configuration>
                    <source>${java.version}</source>
                    <target>${java.version}</target>
                </configuration>
            </plugin>
        </plugins>
    </build>
</project>

উপরের pom.xml ফাইলে java.version এবং project.build.sourceEncoding প্রপার্টি ব্যবহৃত হয়েছে। এখানে, maven-compiler-plugin এর মাধ্যমে আপনি যেকোনো জায়গায় java.version প্রপার্টির মান ব্যবহার করতে পারেন, এবং এটি বিল্ড টাইমে নির্ধারিত মান দিয়ে প্রতিস্থাপিত হবে।

১.২ System Properties এর ব্যবহার

Maven প্রজেক্টের জন্য সিস্টেম প্রপার্টি (যেমন পরিবেশ পরিবর্তনশীল) ব্যবহার করা যায়।

<properties>
    <env.USER> ${env.USER} </env.USER>
</properties>

এখানে, env.USER সিস্টেম প্রপার্টি ব্যবহার করা হচ্ছে, যা রানটাইমে ব্যবহারকারীর নাম সন্নিবেশিত করবে।


২. Maven Resource Filtering এর ধারণা

Resource Filtering হল একটি ক্ষমতা যার মাধ্যমে আপনি রিসোর্স ফাইল (যেমন .properties, .xml, .yml) এর মধ্যে Maven প্রপার্টি ইনজেক্ট করতে পারেন। এটি মূলত কনফিগারেশন ফাইলের মধ্যে পরিবর্তনশীল মান ইনজেক্ট করার জন্য ব্যবহৃত হয়। Resource filtering আপনাকে অ্যাপ্লিকেশনের বিভিন্ন এনভায়রনমেন্টে একই কনফিগারেশন ফাইল ব্যবহার করতে সাহায্য করে, যেখানে ডাইনামিক মান (যেমন ডাটাবেস ইউজারনেম, পাসওয়ার্ড) সংরক্ষণ করা হয়।

২.১ Resource Filtering এর উদাহরণ

মনে করুন, আপনার একটি config.properties ফাইল রয়েছে, যেখানে ডাটাবেস ইউজারনেম এবং পাসওয়ার্ড রাখতে চান। এই কনফিগারেশন ফাইলটির মধ্যে Maven প্রপার্টি ইনজেক্ট করার জন্য resource filtering ব্যবহার করা হয়।

# config.properties
db.username=${db.username}
db.password=${db.password}

এখানে, db.username এবং db.password Maven প্রপার্টি, যেগুলি pom.xml ফাইলে ডিফাইন করা হবে এবং ফাইলটির মধ্যে সন্নিবেশিত হবে।

২.২ pom.xml ফাইলে Resource Filtering কনফিগারেশন

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering> <!-- Enable resource filtering -->
        </resource>
    </resources>

    <properties>
        <db.username>root</db.username>
        <db.password>password123</db.password>
    </properties>
</build>

এখানে, src/main/resources ডিরেক্টরির মধ্যে সমস্ত রিসোর্স ফাইলের মধ্যে ফিল্টারিং সক্রিয় করা হয়েছে। যখন mvn clean install চালানো হবে, তখন config.properties ফাইলের db.username এবং db.password প্রপার্টি গুলি Maven প্রপার্টির মান দিয়ে সন্নিবেশিত হবে।

২.৩ Resource Filtering with Profile

Maven প্রোফাইলের মাধ্যমে আপনি বিভিন্ন পরিবেশে (Development, Testing, Production) আলাদা কনফিগারেশন ব্যবহার করতে পারেন। প্রোফাইল ব্যবহারের মাধ্যমে আপনি বিভিন্ন পরিবেশের জন্য আলাদা প্রপার্টি প্রদান করতে পারবেন।

<profiles>
    <profile>
        <id>development</id>
        <properties>
            <db.username>dev_user</db.username>
            <db.password>dev_password</db.password>
        </properties>
    </profile>
    <profile>
        <id>production</id>
        <properties>
            <db.username>prod_user</db.username>
            <db.password>prod_password</db.password>
        </properties>
    </profile>
</profiles>

এখন, আপনি যখন development প্রোফাইল চালাবেন, তখন db.username এবং db.password পরিবর্তিত হবে এবং production প্রোফাইল চালালে অন্য মান আসবে।


৩. Maven Properties এবং Resource Filtering এর সুবিধা

  1. Dynamic Configuration: বিভিন্ন পরিবেশে ডিপ্লয়মেন্টের জন্য একে অপরের সাথে সম্পৃক্ত কনফিগারেশন পরিবর্তনশীল মান ইনজেক্ট করা সহজ হয়।
  2. Reduced Redundancy: একাধিক পরিবেশে একই কনফিগারেশন ফাইল ব্যবহার করার মাধ্যমে কোড ডুপ্লিকেশন কমানো যায়।
  3. Build-Time Configuration: বিল্ড টাইমে কনফিগারেশন নির্ধারণ করতে পারেন, যার ফলে সেটিংস পরিবর্তন করা সহজ হয়।
  4. Flexibility and Reusability: বিভিন্ন ধরনের কনফিগারেশন একাধিক প্রোজেক্টে পুনরায় ব্যবহার করা যায়।
  5. Environment-Specific Configuration: ডেভেলপমেন্ট, টেস্টিং এবং প্রোডাকশন এনভায়রনমেন্টের জন্য আলাদা কনফিগারেশন ফাইল তৈরি করা যায়।

উপসংহার

Maven Properties এবং Resource Filtering দুটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা Maven প্রজেক্টের কনফিগারেশন এবং ডিপেনডেন্সি ম্যানেজমেন্ট প্রক্রিয়াকে আরও সহজ এবং কার্যকরী করে তোলে। Maven Properties আপনার প্রজেক্টের বিভিন্ন পরিবর্তনশীল মান সংরক্ষণ করতে সাহায্য করে, এবং Resource Filtering আপনাকে কনফিগারেশন ফাইলগুলিতে ডাইনামিক মান ইনজেক্ট করার ক্ষমতা প্রদান করে, যা বিভিন্ন পরিবেশে সঠিক কনফিগারেশন ব্যবহারে সহায়তা করে।


Content added By
Promotion

Are you sure to start over?

Loading...